package main

import (
	"net/http"
)

//Server 定义一个Server抽象接口
type Server interface {
	Routable
	//Start 用于启动监听
	Start(address string) error
}

type sdkHttpServer struct {
	name    string
	handler MyHandler //只依赖接口
}

//接口的具体实现
func (s *sdkHttpServer) Route(method string, pattern string, handlerFunc func(ctx *Context)) {
	s.handler.Route(method, pattern, handlerFunc)
}

//接口的具体实现
func (s *sdkHttpServer) Start(address string) error {
	//注册路由 只需注册一遍 后续查找path可交由ServeHTTP处理
	http.Handle("/", s.handler)
	return http.ListenAndServe(address, nil)
}

//提供一个创建结构体的方法供外部使用
func NewSdkHttp(name string) Server {
	return &sdkHttpServer{name: name, handler: NewHandlers()}
}
